package com.Principal;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import cliente.TCPClient;
import adaptar.Mensajes;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;



/**
 * @author
 * Muestra actividad con el envío de mensajes de servidor
 * */

@SuppressLint("NewApi")
public class Conectar extends Activity
{
//    private ListView mList;
    private ArrayList<String> arrayList;
    private Mensajes mAdapter;
    private TCPClient mTcpClient = null;
    private connectTask conctTask = null;
	private ProgressDialog dialog;
	private String u,c; //variables para usuario y clase provenientes de login
	
	
	 public static List<Materia> materiasRecibidas;
	 
	 String [] nombre;
 	String [] usuario;
 	String [] clave ;
 	String [] rol;
 	String [] nombreCurso;
 	String [] codCurso;
	 
	 
	
   @Override
    public void onCreate(Bundle savedInstanceState)
    {
        
    	super.onCreate(savedInstanceState);
        setContentView(R.layout.conectando);
      


		 dialog = new ProgressDialog(this);
	     dialog.setMessage("Agregando evento...");
	     dialog.setTitle("Progreso");
	     dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
	     dialog.setCancelable(false);
		 arrayList = new ArrayList<String>();   
		 mAdapter = new Mensajes(this, arrayList);
	     mTcpClient = null;
     
        // Conecto con el servidor
        conctTask = new connectTask();
        conctTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        
        //y obtiene la infomacion de las materias
        InputStream is = getResources().openRawResource(R.raw.usuario);
   	 
    	/**
    	 * Se invocará la clase LecturaXML para traer la lista con
    	 * las noticias y se guardaran en el arreglo noticiasRecibidas.
    	 * 
    	 * 
    	 **/
        
    	 SAXParserFactory factory = SAXParserFactory.newInstance();
    	 
    	try {
    	 SAXParser parser = factory.newSAXParser();
    	 LecturaMateria handler = new LecturaMateria();
    	 parser.parse(is, handler);
    	 materiasRecibidas=handler.getMateria();
    	 
    	 } catch (Exception e) {
    	 throw new RuntimeException(e);
    	 }
    	
    	//arreglo donde se guardaran los dias que hay noticias
    	int tamaño=materiasRecibidas.size();
    	System.out.println("tamaño "+tamaño);
    	
    	nombre=new String[tamaño];
    	usuario = new String[tamaño];
    	clave = new String[tamaño];
    	rol = new String[tamaño];
    	nombreCurso = new String[tamaño];
    	codCurso = new String[tamaño];
    	
    	int j=0;
    
         for (int i = 0; i < materiasRecibidas.size(); i++){
      	   	
      		   if((materiasRecibidas.get(i).getUsuario().trim()).equals(u) && (materiasRecibidas.get(i).getClave().trim()).equals(c)){
      			   nombre[j]=materiasRecibidas.get(i).getNombre().trim();
      			   usuario[j] =materiasRecibidas.get(i).getUsuario().trim();
      			   clave[j]=materiasRecibidas.get(i).getClave().trim();
      			   rol[j]=materiasRecibidas.get(i).getRol().trim();
      			   nombreCurso[j]=materiasRecibidas.get(i).getNombreCurso().trim();
      			   codCurso[j]=materiasRecibidas.get(i).getCodCurso().trim();
      			   j++;
      	   	}
        }   

        new SelectMateria().setMateriaUsuario(usuario, clave, nombre, rol, nombreCurso, codCurso);
            
        //Envio al calendario
        Intent intent = new Intent(Conectar.this, SelectMateria.class); 
	    startActivity(intent); 
 
       
    }
   
   public void setLogin(String nombre, String clave){
	   u=nombre;
	   c=clave;
   } 
   
//   private boolean verificarMateriaUsuario(){
//	   int i=0;
//	   while(i<usuario.length){
//		   if(usuario[i].equals(u)){
//			   
//		   }
//	   }
//   	return true;
//   }

    
    /**
     * @author 
     * recibe el mensaje del servidor .asyncTask  
     * */
    public class connectTask extends AsyncTask<String,String,TCPClient> {
        @Override
        protected TCPClient doInBackground(String... message) 
        {
            //we create a TCPClient object and
            mTcpClient = new TCPClient(new TCPClient.OnMessageReceived() 
            {
                @Override
                //here the messageReceived method is implemented
                public void messageReceived(String message) 
                {
                	try
					{                       
                		//this method calls the onProgressUpdate
                		publishProgress(message);
                		if(message!=null)
                		{
                			System.out.println("Return Message from Socket::::: >>>>> "+message);
                		}
					}
					catch (Exception e)
					{
						e.printStackTrace();
					}
                }
            });
            mTcpClient.run();
            if(mTcpClient!=null)
            {
            	mTcpClient.sendMessage("Initial Message when connected with Socket Server");
            }
            return null;
        }
 
        @Override
        protected void onProgressUpdate(String... values) {
            super.onProgressUpdate(values);
 
            //en la arrayList se agregan los mensajes recibidos del server
            arrayList.add(values[0]);
            
            // notify the adapter that the data set has changed. This means that new message received
            // from server was added to the list
            mAdapter.notifyDataSetChanged();
        }
    }

    @Override
    protected void onDestroy()
    {
    	try
		{
    		System.out.println("onDestroy.");
			mTcpClient.sendMessage("bye");
			mTcpClient.stopClient();
			conctTask.cancel(true);
			conctTask = null;
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
    	super.onDestroy();
    }
  
    public void diasNoticias(){
    	
    }
    
}